查看原文
其他

1张GIF表情包就20MB?拿什么拯救我的内存

砺心 阿虚同学 2022-06-07

阿虚同学

读完需要

8分钟

速读仅需 5 分钟

最近我有遇到一个很奇怪的问题

因为我不是转用 Apple Music 本地化听歌了🐴

所以很多歌的歌曲信息都是我自己补充的,当然也包括封面

但我在用 iTunes 把歌传到 iPhone 上来听的时候,有首歌的封面怎么都同步不过来

我来回同步了几遍,还重新连接了几次,甚至换回了有线来同步,这个封面始终都还是同步不上...

我就一直奇了怪了

直到我想重新编辑一下封面,重新添加,我才发现...

好家伙,一张封面竟然有18M!?比我MP3本身都要大了,难怪我添加不上呢

完全被它小小的外表给欺骗了

我后来把图片一压缩,这个问题自然就轻松迎刃而解了

因为很少碰到这么大一张的图片,阿虚平时其实也很少会去做图片压缩,但既然碰到了这个问题,我还是就准备好好研究一下这个问题

在遇到问题的第一次,就一次性好好把它解决——毕竟小天才都会这么干

1

 

   

简单介绍一下图片格式

而要说图片压缩最简单的方式呢,应该就是改图片格式了

无需任何压缩软件,阿虚直接把这张 .png 图片,另存为 .jpg 格式后,立马大小被压缩到了7.8MB

不同的图片格式极大程度的影响着图片的文件大小,所以要谈图片压缩,必须得先了解一下图片格式

1.1

 

  

关于图片格式你需要了解的

下图左这张照片由互联网之父「蒂姆·博纳斯·李」的同事希尔瓦诺于1992年7月18日拍摄

当时欧洲核子研究中心组织了一次音乐会的活动,希尔瓦诺在后台遇到了一支参加演出的女子乐队,然后就给她们拍下了这张合影

而在蒂姆和他的团队完成了支持图片文件的新版万维网建设之后,他正好看到希尔瓦诺在电脑上用Photoshop处理这张图片,于是就要了一张

然后,这张图片就成了一张被上传到互联网的图片,图片格式为GIF

GIF图片格式于1987 年诞生,常用于网页动画,使用无损压缩,支持 256 种颜色,支持单一透明色

是的,虽然如今你看到的很多动图可能糊的一比,但GIF的确是无损压缩

GIF看起来糊的更多原因是其只支持 256 种颜色,明显完全不足以表现真实世界的色彩,色彩单一的GIF如今着实比较少见

而具体来讲,图片的压缩分为有损压缩和无损压缩两种:

「有损压缩」指在压缩文件大小的过程中,损失了一部分图片的信息,也即降低了图片的质量,并且这种损失是不可逆的

举个简单的例子:

BMP、PNG都是无损压缩格式,而JPEG是有损压缩格式。

BMP与PNG互相转格式的话,是不会损失图片质量的,而如果你是把PNG转为JPEG格式,就会造成图片质量损失,就算再从JPEG格式转回PNG格式,也不能恢复图片质量了

(不少网站对上传的图片都会进行压缩,所以JPEG格式容易存在越传越糊的情况)

「无损压缩」指在压缩文件大小的过程中,图片的质量没有任何损耗。我们任何时候都可以从无损压缩过的图片中恢复出原来的信息

我们如今用的最多的JPEG标准和PNG格式,分别于1992年和1996年问世,两个都有20多年的历史了

JPEG是在「文件大小与质量之间平衡做的非常好」的标准,而PNG则是在无损压缩上表现的很优秀

当然,技术其实一直在革新,不断有新的图片格式在被提出

2004年APNG格式诞生、2010年WebP被发明、2015年HEIF(后缀为.heic)被正式定义、2018年底第一张AVIF图片发布...

虽然这些格式各有优点,但也各有各的缺点,也导致这些格式并没有广泛流行起来

  • APNG虽然支持动态图,且目前不少浏览器已经支持显示了,但在移动端、软件端存在较大的兼容性问题(APNG动图无法在软件端查看)

  • WebP虽然同时具备了无损和有损的压缩模式,且在无损压缩上压缩率比PNG还要高,经过其几年的发展,不少互联网也转开始使用这个格式来降低流量消耗,但其应用场景始终比较限于浏览器,WebP动图也难以在浏览器以外的地方进行查看、编辑、分享,不过如果你是站长,可以多考虑一下WebP格式,WebP虽然在本地端兼容性不好,但在网页上已经得到了广泛的支持,网站图片替换为WebP格式是有效节约网站流量的方式

  • HEIF目前无任何浏览器支持,这使得其基本上成为了只能在iOS设备上本地查看或编辑的图片格式(虽然现在部分相机也开始支持这个格式),但对大众来说的确不适合作为图片压缩的考虑

  • AVIF虽然被定义为「下一代图像编码算法」,被很多人认为是取代 JPEG 格式的最佳选择,但其目前发展速度依然较缓慢,浏览器的支持不全,同时各种网站也不支持上传

↕上下滑动查看更多↕

如果准备通过转格式来压缩图片,目前的重点依旧还是放在对 GIF、JPEG 和 PNG 的压缩上

2

 

   

GIF压缩

由于GIF压缩比较特殊哈,就单独先讲这个

不过阿虚原来其实有专门写过GIF压缩,所以这里就不复述了

想要对 GIF 进行有效压缩,你最好还是得知道一些GIF的原理,与常用的压制手段

2.1

 

  

EZGIFCOM

但这里准备对上文进行一点补充说明

EZGIFCOM这个网站:https://ezgif.com/optimize

依旧是阿虚经常用的 GIF 压缩网站——它提供的减帧的功能在GIF压缩中实在过于常用

不过之前的文章没有说该怎么样正确使用这个网站,所以这里录了一个例子——我是怎么把一个20MB的GIF压缩到1MB的

我在EZGIFCOM上连续进行了3个操作:减少一半的帧数 » 减少一半的尺寸 » 减少一半的图片质量

▲配合文字应该还是能看懂的

就这样我把一个20MB的GIF图成功压缩到了1MB,即下图

2.2

 

  

docsmall

而如果要追求小白一键化,我现在反倒更喜欢用下面这个网站了(原来推荐的是软件「PP鸭」)

地址:https://docsmall.com/gif-compress

网站非常干净简洁,最多同时处理30个文件!而且最大支持处理25M的动图!

4个压缩梯度可选,还可随意调整压缩尺寸比例(尺寸真的非常影响GIF图大小!)


3

 

   

JPG&PNG相关说明

GIF压缩说完了,然后再来讲JPG&PNG格式图片的压缩吧

不过我认为对这两种格式进行科普是有必要进行的一个环节

3.1

 

  

关于 JPG 图片

JPEG 是一个压缩标准,而 .jpg 是文件扩展名,其正式扩展应该名是 .jpeg

当初因为 DOS、Windows 95等早期系统采用的8.3命名规则,只支持最长3字符的扩展名,为了兼容,所以后缀名采用了.jpg(也有.jpe)

由于历史习惯和兼容性考虑,.jpg 这个扩展名反倒比正式扩展名更流行

另外,最近可能有些粉丝发现WIN10把默认图片保存格式从 .jpg 变成 .jfif

其实 .jfif 也属于JPEG标准,不过由于很多网站、软件在上传、导入文件时限制了文件扩展名,所以容易遇到无法上传&导入的问题

解决办法其实很简单,改个后缀名即可,改成 .jpg

3.2

 

  

关于PNG图片

PNG 图片主要有三个类型,分别为 PNG-8 和 PNG-24、PNG-32

需要说一下的是 PNG-8

PNG-8 中的 8,其实指的是 8bits,相当于用 2⁸ 大小来存储一张图片的颜色种类,2⁸ = 256,也就是说 PNG 8 能存储 256 种颜色(和GIF一样),你可以大概把它等价成单帧 GIF

而大多数情况下你的 PNG 都是 PNG-24,如果有透明色,通常则是PNG-32(后者更占空间)

关于PNG还 有一点要说明的是PNG比较适合适量图、几何图

颜色越单一越少的图片,采用PNG格式,通常会比用JPEG格式体积更小!

▲左为jpg,右为png

然后PNG这种图片格式虽然是无损压缩的,但不代表它的文件大小不能被压缩

知名PNG压缩网站 tniyPNG 说明过它的压缩原理:是把相似像素的 24 bit 位用 8bit 位来表示,并且移除了不必要的元数据,是有损压缩,不过肉眼很难看出来

其他的PNG压缩工具也是类似的原理

4

 

   

JPG&PNG相关压缩工具

JPG&PNG相关压缩工具真的很多,而且压缩效果你真的很难比除一个哪个最好

毕竟肉眼真的很难看出压缩前后的区别...

4.1

 

  

网站

在线图片压缩网站实在过多,阿虚就不详细介绍了

不经常进行图片压缩的话,以下网站完全足够解决问题了:

  1. 👍Squoosh(谷歌旗下):https://squoosh.app/

  2. 👍文思齐远图片压缩(上面网站的中文版):https://www.i847.cn/yasuo/index.html

  3. 👍docsmall:https://docsmall.com/image-compress(最多一次性30张照片,最大25MB)

  4. 👍TinyPng:https://tinify.cn/(算法优秀,全球知名,最多一次性20张照片,最大5MB)

  5. Recompressor:https://zh.recompressor.com/(压缩之后提供「多种压缩大小后的图片」下载,但这也致使压缩效率有点慢)

  6. Optimizilla:https://imagecompressor.com/zh/(最多一次性20张照片)

  7. VeImageX体验版:http://imagexdemo.volcengine.com/(可同时查看多种格式下的压缩效果)

  8. NiaoAPI:http://www.niaoapi.com/compress/png

  9. img.top:https://img.top/(最大5MB)

↕上下滑动查看更多↕

4.2

 

  

软件

图压(WIN/Mac)

开源、免费的优秀图片压缩软件,支持JPEG,PNG,WebP三种格式的压缩与转换

可以快速进行二压,并可以设置压缩强度、文件大小,轻松满足多种状况下的压缩目的

官网:https://tuya.xinxiao.tech/

Imagine(WIN/Mac/Linux)

一样开源、免费的图片压缩软件,支持Linux,操作友好,支持JPEG,PNG,WebP三种格式的压缩与转换

官网:https://github.com/meowtec/Imagine

PS:Github目前处于半墙状态,访问不了的话,建议了解《Github加速下载教程》

ImageOptim(Mac)

Mac上颇受好评的图片压缩软件,免费,开源,集成多种图片压缩算法,会自动选择压缩比最高的算法组合,支持 PNG、JPG、GIF 格式的图片压缩优化

注意应用商店中的是盗版,这个软件没有上架应用商店,务必到官网下载:https://imageoptim.com/mac

智图(WIN/MAC)

官网:https://zhitu.isux.us/

腾讯 ISUX 前端团队开发,原本是有网页版的,不知道为什么现在不提供服务了

另外测试发现似乎限制5MB文件,而且转换需要将图片进行上传,所以整体而言不是很推荐

但是这款软件支持在压缩的同时生成 webP 格式图片,算是一个优势吧

其实还有像 RIOT、Caesium、ImageAlpha、JPEGmini、PP鸭这些软件,或多或少存在无汉化、界面复杂、支持格式有限、激活码贵的问题,就不予以推荐了

 

其实真要把图片压缩写清楚的话,背后涉及的历史、原理啥的真的太多了

但阿虚几番思索之后还是觉得这类问题追求实用就好

工具是为了帮助我们解决问题,提高效率的,能理解原理很好

但duck不必死磕原理



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存